package ws.utils.collections.table;

import java.util.List;

/**
 * This interface provides services to manipulate table information.
 * 
 * @author Wilson Santos, 36228 <wilson.santos@ua.pt>
 */
public interface ITable {

  /**
   * Get the table's header row.
   *
   * @return row that represents the table's header.
   */
  public Row getHeader();

  /**
   * Set the table's header row.
   *
   * @deprecated
   *
   * @param header new row that represents the table's header.
   */
  public void setHeader(Row header);

  /**
   * Add new row to table. The row will be appended to the list of rows.
   *
   * @param row row to be inserted.
   */
  public void addRow(Row row);

  /**
   * Add column to table's row.
   *
   * @param nRow row identifier.
   * @param col new column.
   */
  public void addColumn(int columnIndex, Column column);

  public void addColumn(Column col);
  public String getColumnContent(int rowIndex, int columnIndex);
  /**
   * Get rows list.
   *
   * @return rows list.
   */
  public List<Row> getRowList();

  /**
   * Set rows list.
   *
   * @param rowList new row list for the table.
   */
  public void setRowList(List<Row> rowList);

  public int getColumnCount();
  public int getRowCount();

  
  public Object[] getColumnNames();

  public Object[][] toArray();
}
